From: Florian Müllner Date: Thu, 12 Mar 2020 21:55:43 +0000 (+0100) Subject: extensionPrefs: Sync list visibility on status changes X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~751^2^2~88 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=7d94bfa6429514e7258b33f045e71250d22bf977;p=gnome-shell.git extensionPrefs: Sync list visibility on status changes We only show the list of system- and user extensions if corresponding extensions are installed, however we only update the visibility after loading the initial list of extensions. As it's possible for the first user extension to be installed while the app is open or the last one to be removed, we should also update the list visibility after extension state changes. https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1088 --- diff --git a/js/extensionPrefs/js/main.js b/js/extensionPrefs/js/main.js index 9dab3c392..d1da73a02 100644 --- a/js/extensionPrefs/js/main.js +++ b/js/extensionPrefs/js/main.js @@ -423,9 +423,11 @@ var ExtensionsWindow = GObject.registerClass({ if (row) { if (extension.state === ExtensionState.UNINSTALLED) row.destroy(); - return; // we only deal with new and deleted extensions here + } else { + this._addExtensionRow(extension); } - this._addExtensionRow(extension); + + this._syncListVisibility(); } _scanExtensions() { @@ -471,6 +473,16 @@ var ExtensionsWindow = GObject.registerClass({ }); } + _syncListVisibility() { + this._userList.visible = this._userList.get_children().length > 0; + this._systemList.visible = this._systemList.get_children().length > 0; + + if (this._userList.visible || this._systemList.visible) + this._mainStack.visible_child_name = 'main'; + else + this._mainStack.visible_child_name = 'placeholder'; + } + _checkUpdates() { let nUpdates = this._userList.get_children().filter(c => c.hasUpdate).length; @@ -482,14 +494,7 @@ var ExtensionsWindow = GObject.registerClass({ } _extensionsLoaded() { - this._userList.visible = this._userList.get_children().length > 0; - this._systemList.visible = this._systemList.get_children().length > 0; - - if (this._userList.visible || this._systemList.visible) - this._mainStack.visible_child_name = 'main'; - else - this._mainStack.visible_child_name = 'placeholder'; - + this._syncListVisibility(); this._checkUpdates(); if (this._startupUuid)